package com.direct.ratelimit.limit;

import java.awt.List;
import java.util.Collection;

import com.direct.ratelimit.RateLimitRequest;

public interface LimitDAO {

	// Collection<Limit> getLimits();

	/**
	 * get the limits including any client overrides
	 * 
	 * @param clientId
	 * @return
	 */
	Collection<Limit> getLimits(RateLimitRequest rateLimitRequest);

	void addLimit(Limit limit);

	/**
	 * get the client overrides for a given set of limits.
	 * 
	 * @param limits
	 * @param clientId
	 * @return
	 */
	Collection<ClientLimitOverride> getClientLimitOverrides(Collection<Limit> limits, String clientId);

	void addClientOverride(ClientLimitOverride clientLimitOverride);

}
